package com.haust.item.com.sxt.service;

import com.haust.commons.pojo.HaustResult;
import com.haust.pojo.TbItem;
import com.haust.pojo.TbItemDesc;
import com.haust.pojo.TbItemParamItem;

import java.util.List;
import java.util.Map;

public interface ItemService {

    /**
     * 修改商品的库存
     * @param params
     * @return
     */
    HaustResult updateItemNum4CreateOrder(List<Map<String,Object>> params);


    /**
     * 分页查询所有的商品
     *
     * @param page 表示第几页
     * @param rows 表示一页多少行
     * @return
     */
    HaustResult selectTbItemAllByPage(Integer page, Integer rows);


    /**
     * 新增商品
     *
     * @param tbItem          商品基本信息
     * @param tbItemDesc      详情图文介绍
     * @param tbItemParamItem 规格与包装
     * @return
     */
    HaustResult insertTbItem(TbItem tbItem,
                               TbItemDesc tbItemDesc,
                               TbItemParamItem tbItemParamItem);


    /**
     * 根据 Id 将 状态设置为  3 表示删除
     *
     * @param id
     * @return
     */
    HaustResult deleteItemById(Long id);

    /**
     * 根据 Id 将 状态设置为  1 表示上架
     *
     * @param id
     * @return
     */
    HaustResult onshelfItemById(Long id);

    /**
     * 根据 Id 将 状态设置为  2 表示下架
     *
     * @param id
     * @return
     */
    HaustResult offshelfItemById(Long id);


    /**
     * 查询商品之前的 预备更新
     *
     * @param id
     * @return
     */
    HaustResult preUpdateItem(Long id);


    /**
     * 修改 商品信息， tb_item、tb_itemDesc、tb_itemParamItem
     * @param tbItem
     * @param tbItemDesc
     * @param paramData
     * @return
     */
    HaustResult updateTbItem(TbItem tbItem,
                               TbItemDesc tbItemDesc,
                               String paramData);


    /**
     * 搜索所有的商品+商品详情描述+商品分类名称
     * @return
     */
    HaustResult selectItem4Search();

}
